package com.education.platform.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.education.platform.dto.demand.DemandCreateDTO;
import com.education.platform.entity.Demand;

import java.util.List;

/**
 * 需求服务接口
 *
 * @author education-platform
 * @since 2024-09-27
 */
public interface DemandService {

    /**
     * 创建需求
     */
    Long createDemand(DemandCreateDTO demandCreateDTO, Long parentId);

    /**
     * 更新需求
     */
    void updateDemand(Long id, DemandCreateDTO demandCreateDTO, Long parentId);

    /**
     * 删除需求
     */
    void deleteDemand(Long id, Long parentId);

    /**
     * 根据ID获取需求详情
     */
    Demand getDemandById(Long id);

    /**
     * 分页查询需求列表
     */
    IPage<Demand> getDemandPage(Page<Demand> page, String subject, String grade, 
                               String teachingType, String status);

    /**
     * 根据家长ID查询需求列表
     */
    List<Demand> getDemandsByParentId(Long parentId);

    /**
     * 增加浏览次数
     */
    void incrementViewCount(Long id);

    /**
     * 关闭需求
     */
    void closeDemand(Long id, Long parentId);

    /**
     * 查询热门需求
     */
    List<Demand> getHotDemands(Integer limit);

    /**
     * 查询即将过期的需求
     */
    List<Demand> getExpiringDemands();

    /**
     * 自动关闭过期需求
     */
    void autoCloseExpiredDemands();
} 